// 导入websocket node对象
var ws = require("nodejs-websocket")

// 创建一个连接通道数据，因为有多个连接
var arrms = []
// 创建服务器，conn就是连接通道
var server = ws.createServer(
    function (conn) {
        
        // 将新的连接通道加入到数组中
        arrms.push(conn)
        // 打印当前正在连接的通道所有
        console.log("当前连接的通道数量" + arrms.length);
        // console.log("new connection 新链接" );


        // 当有数据发送过来，就会指向下面的text函数
        conn.on("text",function(str){
            // 打印接收到的数据
            // console.log(str);
            // 遍历通道数组，给每个通道都发送数据
            for(var i=0; i<arrms.length; i++){
                arrms[i].sendText(str.toUpperCase() + "!!!")
            }
            // 将数据发回给当前连接的客户端,toUpperCase转大写
            
        })
        // 当通道关闭，就会执行这个函数close
        conn.on("close",function(code,reason) {
            // 关闭前连接数量
            console.log("关闭前的连接数量" + arrms.length);
            // 关闭的时候，就将该通道从数组中移除
            arrms.splice(arrms.indexOf(conn),1)
            // reason就是关闭原因
            console.log("当前连接被关闭",arrms.length);
        })
        // 关闭的时候一定会触发一个异常，要对异常进行处理
        conn.on("error",function(code,res){
            console.log("关闭了一个通道"+code+res);
        })
        
    }
).listen(8005, function(){
    console.log("启动监听成功，端口8005");
})